#include <my_header.h>
// 
//同时访问栈上的数据 主线程和子线程都可以对栈上的数据进行修改 
//这时子线程的函数需要传参(栈) ；首先主线程往栈上里面写数据， 
//等待1s后子线程再次写数据，此时主线程的数据被子线程覆盖
/* Usage: ./6_shared_stack */
void *threadFunc(void *arg)
{
    printf("I am child thread\n");

    // 传入参数 强转
    int *pval = (int *)arg;
    *pval = 2002;
    printf("child, val =%d\n", *pval);

    return NULL;
}
int main(void){                                  

    pthread_t tid;
    int val = 100;  // 局部变量 栈空间
    int ret = pthread_create(&tid, NULL, threadFunc, (void *)&val);
    THREAD_ERROR_CHECK(ret, "pthread_create");

    printf("I am main thread\n");

    sleep(1);
    // 虽然栈是私有的，但是其他线程依然有权限读写
    printf("main, val = %d\n", val);
    return 0;
}


